NamedParameterJdbcTemplate
হলো JdbcTemplate
এর একটি সম্প্রসারণ, যা SQL কুয়েরিতে নামযুক্ত প্যারামিটার (Named Parameters) ব্যবহার করার সুবিধা প্রদান করে। সাধারণ JdbcTemplate
এর মাধ্যমে SQL কুয়েরি লেখা হয় যেখানে প্যারামিটারগুলো পজিশনাল (Positional Parameters) হিসেবে প্রদান করা হয় (যেমন ?
ব্যবহার করা হয়)। কিন্তু NamedParameterJdbcTemplate
এর মাধ্যমে SQL কুয়েরিতে প্যারামিটারগুলো নাম দিয়ে উল্লেখ করা হয়, যেমন :paramName
।
এই পদ্ধতিটি SQL কুয়েরি আরো পরিষ্কার, রিডেবল এবং নিরাপদ করে তোলে। বিশেষ করে যখন অনেক প্যারামিটার থাকে, তখন নামযুক্ত প্যারামিটার ব্যবহার করা কোডের মান এবং রক্ষণাবেক্ষণ সহজ করে।
:id
, :name
ইত্যাদি।import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
public class DataSourceConfig {
public DataSource dataSource() {
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName("com.mysql.cj.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/mydb");
dataSource.setUsername("root");
dataSource.setPassword("password");
return dataSource;
}
}
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import javax.sql.DataSource;
import java.util.HashMap;
import java.util.Map;
public class EmployeeDao {
private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
// DataSource Inject করা হচ্ছে
public void setDataSource(DataSource dataSource) {
this.namedParameterJdbcTemplate = new NamedParameterJdbcTemplate(dataSource);
}
// ইনসার্ট অপারেশন: নামযুক্ত প্যারামিটার ব্যবহার
public void insertEmployee(Employee employee) {
String sql = "INSERT INTO employee (id, name, age) VALUES (:id, :name, :age)";
Map<String, Object> params = new HashMap<>();
params.put("id", employee.getId());
params.put("name", employee.getName());
params.put("age", employee.getAge());
namedParameterJdbcTemplate.update(sql, params);
}
// ডেটাবেস থেকে এক্সিকিউট করা কুয়েরি: নামযুক্ত প্যারামিটার ব্যবহার
public Employee getEmployeeById(int id) {
String sql = "SELECT * FROM employee WHERE id = :id";
Map<String, Object> params = new HashMap<>();
params.put("id", id);
return namedParameterJdbcTemplate.queryForObject(sql, params, new EmployeeRowMapper());
}
}
:id
, :name
, :age
।Map<String, Object>
: একটি Map
তৈরি করা হয়েছে, যেখানে SQL প্যারামিটারগুলির নাম (যেমন id
, name
, age
) কীগুলি এবং তাদের মান মানগুলি হিসেবে স্টোর করা হয়েছে।MapSqlParameterSource
(অপশনাল): Map<String, Object>
এর পরিবর্তে MapSqlParameterSource
ব্যবহার করেও নামযুক্ত প্যারামিটার পাস করা যায়, যা আরো সুবিধাজনক এবং স্পষ্ট।MapSqlParameterSource
ব্যবহার উদাহরণ:import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
public void insertEmployee(Employee employee) {
String sql = "INSERT INTO employee (id, name, age) VALUES (:id, :name, :age)";
MapSqlParameterSource params = new MapSqlParameterSource();
params.addValue("id", employee.getId());
params.addValue("name", employee.getName());
params.addValue("age", employee.getAge());
namedParameterJdbcTemplate.update(sql, params);
}
এখানে MapSqlParameterSource
ব্যবহার করা হয়েছে যা Map<String, Object>
এর থেকে আরও ক্লিন এবং সুবিধাজনক।
স্প্রিং জেডিবিসি এর NamedParameterJdbcTemplate
নামযুক্ত প্যারামিটার ব্যবহারের মাধ্যমে ডেটাবেস অপারেশন আরও সহজ, পরিষ্কার এবং নিরাপদ করে তোলে। এটি কোডের রিডেবিলিটি এবং রক্ষণাবেক্ষণ সহজ করে এবং বিশেষত জটিল কুয়েরি ও প্যারামিটার ব্যবস্থাপনার ক্ষেত্রে খুবই কার্যকর।
Read more